package com.ceair.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ceair.entity.Oauth2BasicUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ceair.entity.request.user.*;
import com.ceair.entity.vo.user.Oauth2BasicUserRoleVO;
import com.ceair.entity.vo.user.Oauth2BasicUserVO;

/**
* @author BOB
* @description 针对表【oauth2_basic_user(基础用户信息表)】的数据库操作Service
* @createDate 2025-02-14 23:20:45
*/
public interface IOauth2BasicUserService extends IService<Oauth2BasicUser> {

    /**
     * 分页查询Oauth2基础用户信息。
     *
     * 该函数根据传入的查询条件对象，返回符合条件的Oauth2基础用户信息的分页结果。
     *
     * @param oauth2BasicUserReq 查询条件对象，包含查询Oauth2基础用户信息所需的各种条件。
     * @return 返回一个分页对象，包含查询到的Oauth2基础用户信息列表及分页相关信息。
     */
    Page<Oauth2BasicUser> queryUserWithPage(Oauth2BasicUserReq oauth2BasicUserReq);

    /**
     * 处理用户信息的新增或更新请求
     * 此方法通过POST请求接收用户信息，并将其保存或更新在系统中
     *
     * @param oauth2BasicUserInOrUpReq 用户信息新增或更新请求对象，包含需要保存或更新的用户详细信息
     * @return 返回操作结果，包括成功与否及可能的返回数据
     */
    Oauth2BasicUserVO save(Oauth2BasicUserInOrUpReq oauth2BasicUserInOrUpReq);

    /**
     * 获取指定用户角色清单以及所有角色清单
     * 
     * @param oauth2BasicUserRoleReq 用户角色请求对象，包含获取用户角色列表所需的参数
     * @return 返回用户角色列表的响应对象
     */
    Oauth2BasicUserRoleVO getUserRoleList(Oauth2BasicUserRoleReq oauth2BasicUserRoleReq);

    /**
     * 更新用户角色信息
     * 
     * 该方法接收一个UpdateUserRolesReq对象，其中包含了需要更新的用户角色相关信息
     * 它负责处理用户角色的更新逻辑，并返回更新后的用户角色信息对象Oauth2BasicUserRoleVO
     * 
     * @param updateUserRolesReq 包含用户角色更新信息的请求对象
     * @return 更新后的用户角色信息对象
     */
    Oauth2BasicUserRoleVO updateUserRoles(UpdateUserRolesReq updateUserRolesReq);

    /**
     * 删除用户信息
     *
     * 根据提供的用户删除请求，执行删除操作此方法不返回任何内容，但会抛出异常
     * 如果删除过程中遇到任何问题
     *
     * @param deleteUserReq 包含用户删除所需信息的请求对象，包括需要删除的用户ID等信息
     * @return 更新结果
     */
    Boolean delete(DeleteUserReq deleteUserReq);
}
